package caronas.modelo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import br.com.caelum.vraptor.ioc.Component;
import caronas.dao.CaronaDao;

@Component
public class Trajeto {
	static String labels = "ABCDEFGHIJKLMNOPQRSTUVXZ0123456789";
	private Carona original;
	private CaronaDao dao;
	private String linkTrajeto;
	private List<Ponto> pontos;
	private int vagas;

	public Trajeto(Carona carona, int vagas, CaronaDao dao ) {
		this.vagas = vagas;
		this.original = carona;
		this.dao = dao;
		this.pontos = new ArrayList<Ponto>();
		geraTrajeto();
		linkTrajeto = new Mapa(pontos).getEndereco();
	}
	
	public String getLinkTrajeto() {
		return linkTrajeto;
	}

	private void geraTrajeto() {
		List<Carona> temp = dao.listar();
		for (int i = 0; i < temp.size(); i++) {
			Carona c = temp.get(i);
			if (c.getUsuario().getId() != original.getId()) {
				c.getOrigem().setCor("green");
				c.getDestino().setCor("red");
				c.getOrigem().setLabel(labels.charAt(i % labels.length()));
				c.getDestino().setLabel(labels.charAt(i % labels.length()));
				pontos.add(c.getOrigem());
				pontos.add(c.getDestino());
			}
			if (vagas-- == 0)
				break;
		}
		Collections.shuffle(pontos);
	}
}
